package com.server.common.logistics.interfaces;


import com.server.common.logistics.enums.ApiEnum;
import com.server.common.logistics.request.LogisticsRequest;
import com.server.common.logistics.response.LogisticsResponse;
import com.server.common.logistics.result.*;

public interface LogisticsService {

    <T> LogisticsResponse baseRequest(ApiEnum apiEnum, Object params);

    /**
     * 创建物流单
     * @author LXC
     * @date 2023/2/26 19:27
     */
    CreateOrderResult createOrder(LogisticsRequest orderRequest);

    /**
     * 获取物流单
     * @author LXC
     * @date 2023/2/26 19:27
     */
    GetOrderResult getOrder(LogisticsRequest orderRequest);

    /**
     * 取消物流单
     * @author LXC
     * @date 2023/2/26 19:27
     */
    void cancelOrder();

    /**
     * 拦截物流
     * @author LXC
     * @date 2023/2/26 19:27
     */
    HoldOrderResult holdOrder(LogisticsRequest holdOrderRequest);

    /**
     * 获取物流轨迹
     * @author LXC
     * @date 2023/2/26 19:27
     */
    GetTrackResult getTracking(LogisticsRequest getTrackRequest);

    /**
     * 打印面单
     * @author LXC
     * @date 2023/3/3 10:50
     */
    PrintLabelSyncResult printLabelSync(LogisticsRequest printLabelSyncRequest);


}
